package JavaShengSai;

import java.util.Scanner;

/**
 * 4. 数字三角形
 * https://www.lanqiao.cn/problems/505/learning/?problem_list_id=2&page=1&tag_relation=intersection&tags=2020
 */
public class Main4 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        // 计算路径上的和，要最大值，那么就使用dp
        int n = scan.nextInt();
        int[][] arr = new int[n + 1][n + 1];
        int[][] dp = new int[n + 1][n + 1];
        for(int i = 1;i <= n;i++) {
            for(int j = 1;j <= i;j++) {
                arr[i][j] = scan.nextInt();
            }
        }

        dp[1][1] = arr[1][1];
        for(int i = 2;i <= n;i++) {
            for(int j = 1;j <= i;j++) {
                dp[i][j] = Math.max(dp[i - 1][j],dp[i - 1][j - 1]) + arr[i][j];
            }
        }

        if(n % 2 == 0) {
            // 偶数的话，那么就是最后一行的中间两个值的最大值
            System.out.println(Math.max(dp[n][n / 2],dp[n][n / 2 + 1]));
        }else {
            // 奇数的话，就是最后一行的中间那个值
            System.out.println(dp[n][n / 2 + 1]);
        }
        scan.close();
    }
}
